use std::collections::HashMap;


const DATA: &str = r#"{
    "的": "te",
    "一": "i",
    "是": "shih",
    "了": "liao",
    "不": "pu",
    "在": "tsai",
    "人": "jen",
    "川": "ch'uan",
    "有": "yu",
    "我": "wo",
    "他": "t'a",
    "这": "che",
    "中": "chung",
    "大": "ta",
    "上": "shang",
    "国": "kuo",
    "为": "wei",
    "和": "ho",
    "地": "ti",
    "于": "yu",
    "出": "ch'u",
    "道": "tao",
    "也": "ye",
    "子": "tzu",
    "时": "shih",
    "年": "nian",
    "得": "te",
    "要": "yao",
    "就": "chiu",
    "那": "na",
    "得": "te",
    "和": "ho",
    "它": "t'a",
    "去": "ch'ü",
    "能": "neng",
    "下": "hsia",
    "自": "tzu",
    "会": "hui",
    "上": "shang",
    "生": "sheng",
    "学": "hsueh",
    "里": "li",
    "东": "tung",
    "出": "ch'u",
    "三": "san",
    "小": "hsiao",
    "再": "tsai",
    "港": "kang",
    "澳": "ao",
    "只": "chih",
    "们": "men",
    "天": "t'ien",
    "对": "tui",
    "孙": "sun",
    "能": "neng",
    "子": "tzu",
    "工": "kung",
    "年": "nian",
    "同": "t'ung",
    "样": "yang",
    "家": "chia",
    "动": "tung",
    "心": "hsin",
    "成": "ch'eng",
    "多": "to",
    "么": "me",
    "见": "chien",
    "几": "chi",
    "问": "wen",
    "里": "li",
    "东": "tung",
    "民": "min",
    "水": "shui",
    "电": "tien",
    "话": "hua",
    "年": "nian",
    "点": "tien",
    "应": "ying",
    "给": "kei",
    "体": "t'i",
    "亮": "liang",
    "长": "chang",
    "思": "szu",
    "新": "hsin",
    "香": "hsiang",
    "事": "shih",
    "点": "tien",
    "用": "yung",
    "能": "neng",
    "只": "chih",
    "高": "kao",
    "最": "tsui",
    "问": "wen",
    "为": "wei",
    "工": "kung",
    "起": "ch'i",
    "少": "shao",
    "里": "li",
    "回": "hui",
    "多": "to",
    "其": "chi",
    "给": "kei",
    "全": "ch'uan",
    "从": "ts'ung",
    "往": "wang",
    "给": "kei",
    "去": "ch'ü",
    "名": "ming",
    "多": "to",
    "合": "ho",
    "间": "chien",
    "种": "chung",
    "州": "chou",
    "些": "sie",
    "事": "shih",
    "快": "kuai",
    "半": "pan",
    "面": "mian",
    "本": "pen",
    "步": "pu",
    "走": "tsou",
    "自": "tzu",
    "开": "kai",
    "起": "ch'i",
    "会": "hui",
    "看": "kan",
    "从": "ts'ung",
    "力": "li",
    "语": "yu",
    "界": "chieh",
    "前": "chien",
    "个": "ke",
    "两": "liang",
    "进": "chin",
    "起": "ch'i",
    "心": "hsin",
    "外": "wai",
    "场": "ch'ang",
    "直": "chih",
    "手": "shou",
    "葛": "ko",
    "达": "ta",
    "用": "yung",
    "新": "hsin",
    "往": "wang",
    "步": "pu",
    "讲": "chiang",
    "通": "t'ung",
    "想": "hsiang",
    "还": "hai",
    "为": "wei",
    "行": "hing",
    "后": "hou",
    "长": "chang",
    "左": "ts'o",
    "右": "yu",
    "间": "chien",
    "日": "jih",
    "问": "wen",
    "种": "chung",
    "廣": "kuang",
    "水": "shui",
    "风": "feng",
    "放": "fang",
    "话": "hua",
    "吃": "chih",
    "见": "chien",
    "带": "tai",
    "完": "wan",
    "道": "tao",
    "马": "ma",
    "走": "tsou",
    "門": "men",
    "山": "shan",
    "正": "cheng",
    "想": "hsiang",
    "教": "chiao",
    "进": "chin",
    "量": "liang",
    "分": "fen",
    "头": "tou",
    "普": "p'u",
    "着": "chueh",
    "用": "yung",
    "停": "ting",
    "住": "ch'u",
    "改": "kai",
    "点": "tien",
    "进": "chin",
    "然": "jan",
    "明": "ming",
    "前": "chien",
    "台": "t'ai",
    "太": "t'ai",
    "门": "men",
    "几": "chi",
    "两": "liang",
    "接": "chieh",
    "生": "sheng",
    "身": "shen",
    "线": "hsien",
    "诸": "chu",
    "三": "san",
    "四": "ssu",
    "五": "wu",
    "六": "liu",
    "七": "ch'i",
    "八": "pa",
    "九": "chiu",
    "十": "shih",
    "百": "pai",
    "千": "ch'ien",
    "万": "wan",
    "个": "ke",
    "湾": "wan"
  }
"#;

pub fn converter(input: &str) -> String {
    // 借助汉字到威妥玛拼音的转换表, 实现转换功能
    let json: HashMap<String, String> = serde_json::from_str(DATA).unwrap();
    let mut converted = Vec::new();
    for ch in input.chars() {
        if let Some(pinyin) = json.get(&ch.to_string()).cloned() {
            converted.push(pinyin);
        }
    }
    converted.first_mut().map(|word| {    
        let mut chars = word.chars();
        let first_char = chars.next().unwrap().to_uppercase().collect::<String>(); // 将首字母大写
        let rest_of_word: String = chars.collect(); // 剩余部分保持原样
    
        *word = first_char + &rest_of_word;
    });
    converted.join(" ")
}
